package com.example.okhttpdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/*
OkHttp是square公司开发的，这个公司在开源的事业上贡献了很多。不仅有OkHttp，还有Picasso、
Retrofit等著名的开源项目。
OkHttp不仅在接口的封装上做的简单易用，就连底层实现上也是自成一派，比起原生的HttpURLConnection，
要更加的优秀，现在已经成为了广大Android开发者首选的网络通信库。

使用方法:
1、在使用OkHttp之前，需要现在项目中添加OkHttp库的依赖。
2、创建一个OkHttpClient的实例：
	OkHttpClient client = new OkHttpClient()；
3、如果想要发起一条HTTP请求，就需要创建Request对象：
	Request request = new Request.Builder().build();
4、第3步只是创建了一个空的Request对象，并没有什么实际作用，我们可以在最终的build()方法之前
	连缀很多其他的方法来丰富这个Request对象。比如：
	Request request= new Request.Builder()
						.url("http://www.baidu.com")
						.build();
5、调用OkHttpClient的newCall()方法来创建一个Call对象，并调用它的execute()方法来发送请求
	并获取服务器返回的数据：
	Response response = client.newCall(request).execute();
6、Response对象就是服务器返回的数据，如何获取具体内容:
	String responseData = response.body().string();
7、(POST请求)如果是发送一条POST请求，就相对复杂一点，需要先构建出一个RequestBody对象来存放要提交的参数：
	RequestBody reqeustBody = new FormBody.Builder()
								.add("username","admin")
								.add("password","123456")
								.build();
8、然后再Reuqest.Builder中调用一下post()方法，并将RequestBody对象传入：
	Request request = new Rquest.Builder()
						.url("http://www.baidu.com")
						.post(requestBody)
						.build();
		*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
	Button sendRequset;
	TextView responseText;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		sendRequset = (Button) findViewById(R.id.send_request);
		responseText = (TextView) findViewById(R.id.response);

		sendRequset.setOnClickListener(this);
	}

	@Override
	public void onClick(View view) {
		if (view.getId() == R.id.send_request) {
			sendRequestWithOkHttp();
		}
	}

	private void sendRequestWithOkHttp() {
		new Thread(new Runnable() {
			@Override
			public void run() {
				OkHttpClient client = new OkHttpClient();
				Request request = new Request.Builder()
						.url("http://www.baidu.com")
						.build();
				try {
					Response response=  client.newCall(request).execute();
					String responseData= response.body().string();
					showResponse(responseData);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}).start();
	}

	private void showResponse(final String responseData) {
		runOnUiThread(new Runnable() {
			@Override
			public void run() {
				responseText.setText(responseData);
			}
		});
	}
}
